<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一、 hasOwnProperty：判断一个属性是不是对象的自身属性
        // Object.prototype.hobby = "篮球";
        // function Person(){
        //     this.name = "张三";
        //     this.age =20;
        // }
        // Person.prototype.height = "178cm";
        // let obj = new Person();

        // //怎么循环？？？ for ... in.. (这个会循环原型链上的属性和方法)
        // // 一般在for in 循环的时候都会判断一下属性是不是对象的自身属性（对象自己的属性 和原型链没关系）；
        // // 判断一个属性是不是对象的自身属性 hasOwnProperty
        // console.log(obj);
        // for(let key in obj){
        //     // console.log(key);
        //     // console.log(obj.hasOwnProperty(key));
        //     if(obj.hasOwnProperty(key)){
        //         console.log(obj[key]);
        //     }
        // }


        // 二、 instanceof 判断对象在（（原型链））上是否有构造关系
        // 注意：判断类型的时候小心

        // Person.prototype ---->Object构造出来的
        // function Person(){
        //     this.name = "张三";
        // }
        // let obj =new Person();
        // console.log(obj instanceof Object)

        // arr 是被Array 构造的 Array.prototype ---- Object 构造的
        // let arr = new Array();
        // console.log(arr instanceof Object);
        // 三、constructor 类型判断  建议用 constructor 这个只会判断是哪个构造函数构造  不会判断原型链
        // console.log(arr.constructor===Object);


    </script>
</body>
</html>